home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume25 / tcl / part01 next >
Encoding:
Text File  |  1991-11-14  |  57.1 KB  |  1,698 lines

  1. Newsgroups: comp.sources.misc
  2. From: karl@sugar.neosoft.com (Karl Lehenbauer)
  3. Subject:  v25i069:  tcl - tool command language, version 6.1, Part01/33
  4. Message-ID: <csm-v25i069=tcl.142226@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: 01e9b1ecbe8cf851598974aa6c84014f
  6. Date: Thu, 14 Nov 1991 20:25:03 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: karl@sugar.neosoft.com (Karl Lehenbauer)
  10. Posting-number: Volume 25, Issue 69
  11. Archive-name: tcl/part01
  12. Environment: UNIX
  13.  
  14. This is a posting of the source and documentation for Tcl, an
  15. embeddable tool command language, created by John Ousterhout.
  16.  
  17. This was posted at John's request by Karl Lehenbauer (karl@NeoSoft.com).
  18.  
  19. This is release 6.1.  
  20.  
  21. For more information, see the file "tcl6.1/README" in this release.
  22.  
  23. The file tclVar.c had to be split into two files, tclVar.c.1 and tclVar.c.2,
  24. in order to not exceed the maximum size of a Usenet posting.  Similarly,
  25. the file doc/Tcl.man was split into three files, doc/Tcl.man.1, doc/Tcl.man.2
  26. and doc/Tcl.man.3.  Although these files should be automatically concatenated 
  27. when you unpack the last part, if they are not for some reason, you should put 
  28. them together by hand.
  29.  
  30. Good luck.  If you have any problems with the Usenet distribution, contact
  31. Karl or Mark Diekhans (markd@Grizzly.com).  For problems with Tcl 6.1 itself,
  32. contact John Ousterhout (ouster@sprite.berkeley.edu).
  33.  
  34. Regards,
  35. Karl Lehenbauer (karl@NeoSoft.com)
  36. -----------
  37. #! /bin/sh
  38. # This is a shell archive.  Remove anything before this line, then unpack
  39. # it by saving it into a file and typing "sh file".  To overwrite existing
  40. # files, type "sh file -c".  You can also feed this as standard input via
  41. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  42. # will see the following message at the end:
  43. #        "End of archive 1 (of 33)."
  44. # Contents:  README tcl6.1 tcl6.1/MANIFEST tcl6.1/Makefile
  45. #   tcl6.1/compat tcl6.1/compat/README tcl6.1/compat/dirent.h
  46. #   tcl6.1/compat/dirent2.h tcl6.1/compat/limits.h
  47. #   tcl6.1/compat/opendir.c tcl6.1/compat/stdlib.h
  48. #   tcl6.1/compat/string.h tcl6.1/compat/strstr.c
  49. #   tcl6.1/compat/testpid.c tcl6.1/compat/testwait.c tcl6.1/doc
  50. #   tcl6.1/library tcl6.1/library/mkindex.tcl
  51. #   tcl6.1/library/parray.tcl tcl6.1/library/tclIndex tcl6.1/panic.c
  52. #   tcl6.1/regexp.h tcl6.1/tests tcl6.1/tests/all
  53. #   tcl6.1/tests/concat.test tcl6.1/tests/defs tcl6.1/tests/eval.test
  54. #   tcl6.1/tests/join.test tcl6.1/tests/llength.test
  55. #   tcl6.1/tests/lsearch.test tcl6.1/tests/lsort.test
  56. #   tcl6.1/tests/split.test tcl6.1/tests/unknown.test
  57. # Wrapped by karl@one on Tue Nov 12 19:44:10 1991
  58. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  59. if test -f 'README' -a "${1}" != "-c" ; then 
  60.   echo shar: Will not clobber existing file \"'README'\"
  61. else
  62. echo shar: Extracting \"'README'\" \(955 characters\)
  63. sed "s/^X//" >'README' <<'END_OF_FILE'
  64. X
  65. XThis is a posting of the source and documentation for Tcl, an
  66. Xembeddable tool command language, created by John Ousterhout.
  67. X
  68. XThis is release 6.1.
  69. X
  70. XFor more information, see the file "tcl6.1/README" in this release.
  71. X
  72. XThis was posted at John's request by Karl Lehenbauer (karl@NeoSoft.com).
  73. X
  74. XThe file tclVar.c had to be split into two files, tclVar.c.1 and tclVar.c.2,
  75. Xin order to not exceed the maximum size of a Usenet posting.  Similarly,
  76. Xthe file doc/Tcl.man was split into three files, doc/Tcl.man.1, doc/Tcl.man.2
  77. Xand doc/Tcl.man.3.  Although these files should be automatically concatenated 
  78. Xwhen you unpack the last part, if they are not for some reason, you should put 
  79. Xthem together by hand.
  80. X
  81. XGood luck.  If you have any problems with the Usenet distribution, contact
  82. XKarl or Mark Diekhans (markd@Grizzly.com).  For problems with Tcl 6.1 itself,
  83. Xcontact John Ousterhout (ouster@sprite.berkeley.edu).
  84. X
  85. XRegards,
  86. XKarl Lehenbauer (karl@NeoSoft.com)
  87. X
  88. END_OF_FILE
  89. if test 955 -ne `wc -c <'README'`; then
  90.     echo shar: \"'README'\" unpacked with wrong size!
  91. fi
  92. # end of 'README'
  93. fi
  94. if test ! -d 'tcl6.1' ; then
  95.     echo shar: Creating directory \"'tcl6.1'\"
  96.     mkdir 'tcl6.1'
  97. fi
  98. if test -f 'tcl6.1/MANIFEST' -a "${1}" != "-c" ; then 
  99.   echo shar: Will not clobber existing file \"'tcl6.1/MANIFEST'\"
  100. else
  101. echo shar: Extracting \"'tcl6.1/MANIFEST'\" \(4022 characters\)
  102. sed "s/^X//" >'tcl6.1/MANIFEST' <<'END_OF_FILE'
  103. X   File Name        Archive #    Description
  104. X-----------------------------------------------------------
  105. X README                     1    
  106. X tcl6.1                     1    
  107. X tcl6.1/MANIFEST            1    This shipping list
  108. X tcl6.1/Makefile            1    
  109. X tcl6.1/README              8    
  110. X tcl6.1/changes            11    
  111. X tcl6.1/compat              1    
  112. X tcl6.1/compat/README       1    
  113. X tcl6.1/compat/dirent.h     1    
  114. X tcl6.1/compat/dirent2.h    1    
  115. X tcl6.1/compat/limits.h     1    
  116. X tcl6.1/compat/opendir.c    1    
  117. X tcl6.1/compat/stdlib.h     1    
  118. X tcl6.1/compat/strerror.c  10    
  119. X tcl6.1/compat/string.h     1    
  120. X tcl6.1/compat/strstr.c     1    
  121. X tcl6.1/compat/strtol.c     2    
  122. X tcl6.1/compat/strtoul.c    3    
  123. X tcl6.1/compat/testpid.c    1    
  124. X tcl6.1/compat/testwait.c   1    
  125. X tcl6.1/config              7    
  126. X tcl6.1/doc                 1    
  127. X tcl6.1/doc/AddErrInfo.man  6    
  128. X tcl6.1/doc/AssembCmd.man   5    
  129. X tcl6.1/doc/Backslash.man   4    
  130. X tcl6.1/doc/Concat.man      4    
  131. X tcl6.1/doc/CrtCommand.man  6    
  132. X tcl6.1/doc/CrtInterp.man   4    
  133. X tcl6.1/doc/CrtPipelin.man  5    
  134. X tcl6.1/doc/CrtTrace.man    6    
  135. X tcl6.1/doc/Eval.man        5    
  136. X tcl6.1/doc/ExprLong.man    5    
  137. X tcl6.1/doc/Fork.man        6    
  138. X tcl6.1/doc/GetInt.man      5    
  139. X tcl6.1/doc/Hash.man       10    
  140. X tcl6.1/doc/History.man     4    
  141. X tcl6.1/doc/Interp.man      7    
  142. X tcl6.1/doc/SetResult.man   8    
  143. X tcl6.1/doc/SetVar.man      8    
  144. X tcl6.1/doc/SplitList.man   6    
  145. X tcl6.1/doc/StrMatch.man    3    
  146. X tcl6.1/doc/Tcl.man.1      27    
  147. X tcl6.1/doc/Tcl.man.2      33    
  148. X tcl6.1/doc/Tcl.man.3      32    
  149. X tcl6.1/doc/TildeSubst.man  4    
  150. X tcl6.1/doc/TraceVar.man   14    
  151. X tcl6.1/doc/library.man     9    
  152. X tcl6.1/doc/usenix.text    31    
  153. X tcl6.1/library             1    
  154. X tcl6.1/library/init.tcl    3    
  155. X tcl6.1/library/mkindex.tcl  1    
  156. X tcl6.1/library/parray.tcl  1    
  157. X tcl6.1/library/tclIndex    1    
  158. X tcl6.1/panic.c             1    
  159. X tcl6.1/regexp.c           18    
  160. X tcl6.1/regexp.h            1    
  161. X tcl6.1/tcl.h               9    
  162. X tcl6.1/tclAssem.c          4    
  163. X tcl6.1/tclBasic.c         17    
  164. X tcl6.1/tclCkalloc.c       12    
  165. X tcl6.1/tclCmdAH.c         16    
  166. X tcl6.1/tclCmdIL.c         20    
  167. X tcl6.1/tclCmdMZ.c         28    
  168. X tcl6.1/tclEnv.c            9    
  169. X tcl6.1/tclExpr.c          26    
  170. X tcl6.1/tclGet.c            3    
  171. X tcl6.1/tclGlob.c          11    
  172. X tcl6.1/tclHash.c          16    
  173. X tcl6.1/tclHash.h           3    
  174. X tcl6.1/tclHistory.c       21    
  175. X tcl6.1/tclInt.h           23    
  176. X tcl6.1/tclParse.c         24    
  177. X tcl6.1/tclProc.c          12    
  178. X tcl6.1/tclTest.c           2    
  179. X tcl6.1/tclUnix.h           5    
  180. X tcl6.1/tclUnixAZ.c        30    
  181. X tcl6.1/tclUnixStr.c       12    
  182. X tcl6.1/tclUnixUtil.c      19    
  183. X tcl6.1/tclUtil.c          29    
  184. X tcl6.1/tclVar.c.1         25    
  185. X tcl6.1/tclVar.c.2         22    
  186. X tcl6.1/tests               1    
  187. X tcl6.1/tests/README        3    
  188. X tcl6.1/tests/all           1    
  189. X tcl6.1/tests/append.test   2    
  190. X tcl6.1/tests/case.test     2    
  191. X tcl6.1/tests/cd.test       2    
  192. X tcl6.1/tests/concat.test   1    
  193. X tcl6.1/tests/defs          1    
  194. X tcl6.1/tests/env.test      2    
  195. X tcl6.1/tests/error.test    3    
  196. X tcl6.1/tests/eval.test     1    
  197. X tcl6.1/tests/exec.test     4    
  198. X tcl6.1/tests/expr.test    14    
  199. X tcl6.1/tests/file.test     7    
  200. X tcl6.1/tests/for.test      3    
  201. X tcl6.1/tests/format.test  10    
  202. X tcl6.1/tests/glob.test     3    
  203. X tcl6.1/tests/history.test 11    
  204. X tcl6.1/tests/if.test       3    
  205. X tcl6.1/tests/incr.test     2    
  206. X tcl6.1/tests/info.test     9    
  207. X tcl6.1/tests/join.test     1    
  208. X tcl6.1/tests/lindex.test   2    
  209. X tcl6.1/tests/linsert.test  2    
  210. X tcl6.1/tests/list.test     2    
  211. X tcl6.1/tests/llength.test  1    
  212. X tcl6.1/tests/lrange.test   2    
  213. X tcl6.1/tests/lreplace.test  2    
  214. X tcl6.1/tests/lsearch.test  1    
  215. X tcl6.1/tests/lsort.test    1    
  216. X tcl6.1/tests/open.test    13    
  217. X tcl6.1/tests/parse.test   10    
  218. X tcl6.1/tests/proc.test     7    
  219. X tcl6.1/tests/regexp.test   7    
  220. X tcl6.1/tests/rename.test   2    
  221. X tcl6.1/tests/scan.test    15    
  222. X tcl6.1/tests/set.test     13    
  223. X tcl6.1/tests/source.test   2    
  224. X tcl6.1/tests/split.test    1    
  225. X tcl6.1/tests/string.test   8    
  226. X tcl6.1/tests/trace.test   15    
  227. X tcl6.1/tests/unknown.test  1    
  228. X tcl6.1/tests/uplevel.test  2    
  229. X tcl6.1/tests/upvar.test    4    
  230. X tcl6.1/tests/while.test    2    
  231. END_OF_FILE
  232. if test 4022 -ne `wc -c <'tcl6.1/MANIFEST'`; then
  233.     echo shar: \"'tcl6.1/MANIFEST'\" unpacked with wrong size!
  234. fi
  235. # end of 'tcl6.1/MANIFEST'
  236. fi
  237. if test -f 'tcl6.1/Makefile' -a "${1}" != "-c" ; then 
  238.   echo shar: Will not clobber existing file \"'tcl6.1/Makefile'\"
  239. else
  240. echo shar: Extracting \"'tcl6.1/Makefile'\" \(1820 characters\)
  241. sed "s/^X//" >'tcl6.1/Makefile' <<'END_OF_FILE'
  242. X#
  243. X# This Makefile is for use when distributing Tcl to the outside world.
  244. X# It is normally set up by running the "config" script.  Before modifying
  245. X# this file by hand, you should read through the "config" script to see
  246. X# what it does.
  247. X#
  248. X# Some changes you may wish to make here:
  249. X#
  250. X# 1. To compile for non-UNIX systems (so that only the non-UNIX-specific
  251. X# commands are available), change the OBJS line below so it doesn't
  252. X# include ${UNIX_OBJS}.  Also, add the switch "-DTCL_GENERIC_ONLY" to
  253. X# CFLAGS.  Lastly, you'll have to provide your own replacement for the
  254. X# "panic" procedure (see panic.c for what the current one does).
  255. X#
  256. X# 2. ANSI-C procedure prototypes are turned on by default if supported
  257. X# by the compiler.  To turn them off, add "-DNO_PROTOTYPE" to CFLAGS
  258. X# below.
  259. X#
  260. X# 3. If you've put the Tcl script library in a non-standard place, change
  261. X# the definition of TCL_LIBRARY to correspond to its location on your
  262. X# system.
  263. X#
  264. X
  265. XTCL_LIBRARY =    /usr/local/lib/tcl
  266. X
  267. XCC =        cc
  268. XCFLAGS =    -g -I. -DTCL_LIBRARY=\"${TCL_LIBRARY}\"
  269. X
  270. XGENERIC_OBJS =    regexp.o tclAssem.o tclBasic.o tclCkalloc.o \
  271. X    tclCmdAH.o tclCmdIL.o tclCmdMZ.o tclExpr.o tclGet.o \
  272. X    tclHash.o tclHistory.o tclParse.o tclProc.o tclUtil.o \
  273. X    tclVar.o
  274. X
  275. XUNIX_OBJS = panic.o tclEnv.o tclGlob.o tclUnixAZ.o tclUnixStr.o \
  276. X    tclUnixUtil.o 
  277. X
  278. XCOMPAT_OBJS = strerror.o opendir.o strstr.o strtoul.o
  279. X
  280. XOBJS = ${GENERIC_OBJS} ${UNIX_OBJS} ${COMPAT_OBJS}
  281. X
  282. Xlibtcl.a: ${OBJS}
  283. X    rm -f libtcl.a
  284. X    ar cr libtcl.a ${OBJS}
  285. X
  286. XtclTest: tclTest.o libtcl.a
  287. X    ${CC} ${CFLAGS} tclTest.o libtcl.a -o tclTest
  288. X
  289. Xclean:
  290. X    rm -f ${OBJS} libtcl.a tclTest.o tclTest
  291. X
  292. X# The following target is used during configuration to compile
  293. X# a test program to see if certain facilities are available on
  294. X# the system.
  295. X
  296. Xtest:
  297. X    ${CC} ${CFLAGS} test.c
  298. X
  299. X${OBJS}: tcl.h tclHash.h tclInt.h
  300. X${UNIX_OBJS}: tclUnix.h
  301. END_OF_FILE
  302. if test 1820 -ne `wc -c <'tcl6.1/Makefile'`; then
  303.     echo shar: \"'tcl6.1/Makefile'\" unpacked with wrong size!
  304. fi
  305. # end of 'tcl6.1/Makefile'
  306. fi
  307. if test ! -d 'tcl6.1/compat' ; then
  308.     echo shar: Creating directory \"'tcl6.1/compat'\"
  309.     mkdir 'tcl6.1/compat'
  310. fi
  311. if test -f 'tcl6.1/compat/README' -a "${1}" != "-c" ; then 
  312.   echo shar: Will not clobber existing file \"'tcl6.1/compat/README'\"
  313. else
  314. echo shar: Extracting \"'tcl6.1/compat/README'\" \(363 characters\)
  315. sed "s/^X//" >'tcl6.1/compat/README' <<'END_OF_FILE'
  316. XThis directory contains various header and code files that are
  317. Xused make Tcl compatible with various releases of UNIX and UNIX-like
  318. Xsystems.  Typically, files from this directory are used to compile
  319. XTcl when the corresponding files aren't present in the system's
  320. Xlibrary area.  When the whole world is POSIX-ified, this information
  321. Xshould become unnecessary. (?)
  322. END_OF_FILE
  323. if test 363 -ne `wc -c <'tcl6.1/compat/README'`; then
  324.     echo shar: \"'tcl6.1/compat/README'\" unpacked with wrong size!
  325. fi
  326. # end of 'tcl6.1/compat/README'
  327. fi
  328. if test -f 'tcl6.1/compat/dirent.h' -a "${1}" != "-c" ; then 
  329.   echo shar: Will not clobber existing file \"'tcl6.1/compat/dirent.h'\"
  330. else
  331. echo shar: Extracting \"'tcl6.1/compat/dirent.h'\" \(809 characters\)
  332. sed "s/^X//" >'tcl6.1/compat/dirent.h' <<'END_OF_FILE'
  333. X/*
  334. X * dirent.h --
  335. X *
  336. X *    This file is a replacement for <dirent.h> in systems that
  337. X *    support the old BSD-style <sys/dir.h> with a "struct direct".
  338. X *
  339. X * Copyright 1991 Regents of the University of California
  340. X * Permission to use, copy, modify, and distribute this
  341. X * software and its documentation for any purpose and without
  342. X * fee is hereby granted, provided that this copyright
  343. X * notice appears in all copies.  The University of California
  344. X * makes no representations about the suitability of this
  345. X * software for any purpose.  It is provided "as is" without
  346. X * express or implied warranty.
  347. X *
  348. X * $Header: /sprite/src/lib/tcl/compat/RCS/dirent.h,v 1.1 91/09/19 16:22:06 ouster Exp $ SPRITE (Berkeley)
  349. X */
  350. X
  351. X#ifndef _DIRENT
  352. X#define _DIRENT
  353. X
  354. X#include <sys/dir.h>
  355. X
  356. X#define dirent direct
  357. X
  358. X#endif /* _DIRENT */
  359. END_OF_FILE
  360. if test 809 -ne `wc -c <'tcl6.1/compat/dirent.h'`; then
  361.     echo shar: \"'tcl6.1/compat/dirent.h'\" unpacked with wrong size!
  362. fi
  363. # end of 'tcl6.1/compat/dirent.h'
  364. fi
  365. if test -f 'tcl6.1/compat/dirent2.h' -a "${1}" != "-c" ; then 
  366.   echo shar: Will not clobber existing file \"'tcl6.1/compat/dirent2.h'\"
  367. else
  368. echo shar: Extracting \"'tcl6.1/compat/dirent2.h'\" \(1658 characters\)
  369. sed "s/^X//" >'tcl6.1/compat/dirent2.h' <<'END_OF_FILE'
  370. X/*
  371. X * dirent.h --
  372. X *
  373. X *    Declarations of a library of directory-reading procedures
  374. X *    in the POSIX style ("struct dirent").
  375. X *
  376. X * Copyright 1991 Regents of the University of California
  377. X * Permission to use, copy, modify, and distribute this
  378. X * software and its documentation for any purpose and without
  379. X * fee is hereby granted, provided that this copyright
  380. X * notice appears in all copies.  The University of California
  381. X * makes no representations about the suitability of this
  382. X * software for any purpose.  It is provided "as is" without
  383. X * express or implied warranty.
  384. X *
  385. X * $Header: /sprite/src/lib/tcl/compat/RCS/dirent2.h,v 1.1 91/09/19 16:22:08 ouster Exp $ SPRITE (Berkeley)
  386. X */
  387. X
  388. X#ifndef _DIRENT
  389. X#define _DIRENT
  390. X
  391. X#ifndef _TCL
  392. X#include <tcl.h>
  393. X#endif
  394. X
  395. X/*
  396. X * Dirent structure, which holds information about a single
  397. X * directory entry.
  398. X */
  399. X
  400. X#define MAXNAMLEN 255
  401. X#define DIRBLKSIZ 512
  402. X
  403. Xstruct dirent {
  404. X    long d_ino;            /* Inode number of entry */
  405. X    short d_reclen;        /* Length of this record */
  406. X    short d_namlen;        /* Length of string in d_name */
  407. X    char d_name[MAXNAMLEN + 1];    /* Name must be no longer than this */
  408. X};
  409. X
  410. X/*
  411. X * State that keeps track of the reading of a directory (clients
  412. X * should never look inside this structure;  the fields should
  413. X * only be accessed by the library procedures).
  414. X */
  415. X
  416. Xtypedef struct _dirdesc {
  417. X    int dd_fd;
  418. X    long dd_loc;
  419. X    long dd_size;
  420. X    char dd_buf[DIRBLKSIZ];
  421. X} DIR;
  422. X
  423. X/*
  424. X * Procedures defined for reading directories:
  425. X */
  426. X
  427. Xextern void        closedir _ANSI_ARGS_((DIR *dirp));
  428. Xextern DIR *        opendir _ANSI_ARGS_((char *name));
  429. Xextern struct dirent *    readdir _ANSI_ARGS_((DIR *dirp));
  430. X
  431. X#endif /* _DIRENT */
  432. END_OF_FILE
  433. if test 1658 -ne `wc -c <'tcl6.1/compat/dirent2.h'`; then
  434.     echo shar: \"'tcl6.1/compat/dirent2.h'\" unpacked with wrong size!
  435. fi
  436. # end of 'tcl6.1/compat/dirent2.h'
  437. fi
  438. if test -f 'tcl6.1/compat/limits.h' -a "${1}" != "-c" ; then 
  439.   echo shar: Will not clobber existing file \"'tcl6.1/compat/limits.h'\"
  440. else
  441. echo shar: Extracting \"'tcl6.1/compat/limits.h'\" \(893 characters\)
  442. sed "s/^X//" >'tcl6.1/compat/limits.h' <<'END_OF_FILE'
  443. X/*
  444. X * limits.h --
  445. X *
  446. X *    This is a dummy header file to #include in Tcl when there
  447. X *    is no limits.h in /usr/include.  The file is totally empty.
  448. X *    In case you're wondering why Tcl includes the file at all
  449. X *    if it can be empty, it's because there's already code in
  450. X *    tclUnix.h to #define anything that's not defined in limits.h.
  451. X *
  452. X * Copyright 1991 Regents of the University of California
  453. X * Permission to use, copy, modify, and distribute this
  454. X * software and its documentation for any purpose and without
  455. X * fee is hereby granted, provided that this copyright
  456. X * notice appears in all copies.  The University of California
  457. X * makes no representations about the suitability of this
  458. X * software for any purpose.  It is provided "as is" without
  459. X * express or implied warranty.
  460. X *
  461. X * $Header: /sprite/src/lib/tcl/compat/RCS/limits.h,v 1.1 91/09/19 16:22:08 ouster Exp $ SPRITE (Berkeley)
  462. X */
  463. END_OF_FILE
  464. if test 893 -ne `wc -c <'tcl6.1/compat/limits.h'`; then
  465.     echo shar: \"'tcl6.1/compat/limits.h'\" unpacked with wrong size!
  466. fi
  467. # end of 'tcl6.1/compat/limits.h'
  468. fi
  469. if test -f 'tcl6.1/compat/opendir.c' -a "${1}" != "-c" ; then 
  470.   echo shar: Will not clobber existing file \"'tcl6.1/compat/opendir.c'\"
  471. else
  472. echo shar: Extracting \"'tcl6.1/compat/opendir.c'\" \(1983 characters\)
  473. sed "s/^X//" >'tcl6.1/compat/opendir.c' <<'END_OF_FILE'
  474. X/* 
  475. X * opendir.c --
  476. X *
  477. X *    This file provides dirent-style directory-reading procedures
  478. X *    for V7 Unix systems that don't have such procedures.  The
  479. X *    origin of this code is unclear, but it seems to have come
  480. X *    originally from Larry Wall.
  481. X *
  482. X */
  483. X
  484. X#include <tclInt.h>
  485. X#include <tclUnix.h>
  486. X
  487. X#undef DIRSIZ
  488. X#define DIRSIZ(dp) \
  489. X    ((sizeof (struct dirent) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3))
  490. X
  491. X/*
  492. X * open a directory.
  493. X */
  494. XDIR *
  495. Xopendir(name)
  496. Xchar *name;
  497. X{
  498. X    register DIR *dirp;
  499. X    register int fd;
  500. X    char *myname;
  501. X
  502. X    myname = ((*name == '\0') ? "." : name);
  503. X    if ((fd = open(myname, 0, 0)) == -1)
  504. X        return NULL;
  505. X    if ((dirp = (DIR *)ckalloc(sizeof(DIR))) == NULL) {
  506. X        close (fd);
  507. X        return NULL;
  508. X    }
  509. X    dirp->dd_fd = fd;
  510. X    dirp->dd_loc = 0;
  511. X    return dirp;
  512. X}
  513. X
  514. X/*
  515. X * read an old style directory entry and present it as a new one
  516. X */
  517. X#ifndef pyr
  518. X#define    ODIRSIZ    14
  519. X
  520. Xstruct    olddirect {
  521. X    ino_t    od_ino;
  522. X    char    od_name[ODIRSIZ];
  523. X};
  524. X#else    /* a Pyramid in the ATT universe */
  525. X#define    ODIRSIZ    248
  526. X
  527. Xstruct    olddirect {
  528. X    long    od_ino;
  529. X    short    od_fill1, od_fill2;
  530. X    char    od_name[ODIRSIZ];
  531. X};
  532. X#endif
  533. X
  534. X/*
  535. X * get next entry in a directory.
  536. X */
  537. Xstruct dirent *
  538. Xreaddir(dirp)
  539. Xregister DIR *dirp;
  540. X{
  541. X    register struct olddirect *dp;
  542. X    static struct dirent dir;
  543. X
  544. X    for (;;) {
  545. X        if (dirp->dd_loc == 0) {
  546. X            dirp->dd_size = read(dirp->dd_fd, dirp->dd_buf,
  547. X                DIRBLKSIZ);
  548. X            if (dirp->dd_size <= 0)
  549. X                return NULL;
  550. X        }
  551. X        if (dirp->dd_loc >= dirp->dd_size) {
  552. X            dirp->dd_loc = 0;
  553. X            continue;
  554. X        }
  555. X        dp = (struct olddirect *)(dirp->dd_buf + dirp->dd_loc);
  556. X        dirp->dd_loc += sizeof(struct olddirect);
  557. X        if (dp->od_ino == 0)
  558. X            continue;
  559. X        dir.d_ino = dp->od_ino;
  560. X        strncpy(dir.d_name, dp->od_name, ODIRSIZ);
  561. X        dir.d_name[ODIRSIZ] = '\0'; /* insure null termination */
  562. X        dir.d_namlen = strlen(dir.d_name);
  563. X        dir.d_reclen = DIRSIZ(&dir);
  564. X        return (&dir);
  565. X    }
  566. X}
  567. X
  568. X/*
  569. X * close a directory.
  570. X */
  571. Xvoid
  572. Xclosedir(dirp)
  573. Xregister DIR *dirp;
  574. X{
  575. X    close(dirp->dd_fd);
  576. X    dirp->dd_fd = -1;
  577. X    dirp->dd_loc = 0;
  578. X    ckfree((char *) dirp);
  579. X}
  580. END_OF_FILE
  581. if test 1983 -ne `wc -c <'tcl6.1/compat/opendir.c'`; then
  582.     echo shar: \"'tcl6.1/compat/opendir.c'\" unpacked with wrong size!
  583. fi
  584. # end of 'tcl6.1/compat/opendir.c'
  585. fi
  586. if test -f 'tcl6.1/compat/stdlib.h' -a "${1}" != "-c" ; then 
  587.   echo shar: Will not clobber existing file \"'tcl6.1/compat/stdlib.h'\"
  588. else
  589. echo shar: Extracting \"'tcl6.1/compat/stdlib.h'\" \(1915 characters\)
  590. sed "s/^X//" >'tcl6.1/compat/stdlib.h' <<'END_OF_FILE'
  591. X/*
  592. X * stdlib.h --
  593. X *
  594. X *    Declares facilities exported by the "stdlib" portion of
  595. X *    the C library.  This file isn't complete in the ANSI-C
  596. X *    sense;  it only declares things that are needed by Tcl.
  597. X *    This file is needed even on many systems with their own
  598. X *    stdlib.h (e.g. SunOS) because not all stdlib.h files
  599. X *    declare all the procedures needed here (such as strtod).
  600. X *
  601. X * Copyright 1991 Regents of the University of California
  602. X * Permission to use, copy, modify, and distribute this
  603. X * software and its documentation for any purpose and without
  604. X * fee is hereby granted, provided that the above copyright
  605. X * notice appears in all copies.  The University of California
  606. X * makes no representations about the suitability of this
  607. X * software for any purpose.  It is provided "as is" without
  608. X * express or implied warranty.
  609. X *
  610. X * $Header: /user6/ouster/tcl/compat/RCS/stdlib.h,v 1.2 91/10/17 10:52:12 ouster Exp $ SPRITE (Berkeley)
  611. X */
  612. X
  613. X#ifndef _STDLIB
  614. X#define _STDLIB
  615. X
  616. X#include <tcl.h>
  617. X
  618. Xextern void        abort _ANSI_ARGS_((void));
  619. Xextern double        atof _ANSI_ARGS_((char *string));
  620. Xextern int        atoi _ANSI_ARGS_((char *string));
  621. Xextern long        atol _ANSI_ARGS_((char *string));
  622. Xextern char *        calloc _ANSI_ARGS_((unsigned int numElements,
  623. X                unsigned int size));
  624. Xextern int        exit _ANSI_ARGS_((int status));
  625. Xextern int        free _ANSI_ARGS_((char *blockPtr));
  626. Xextern char *        getenv _ANSI_ARGS_((char *name));
  627. Xextern char *        malloc _ANSI_ARGS_((unsigned int numBytes));
  628. Xextern void        qsort _ANSI_ARGS_((char *base, int n, int size,
  629. X                int (*compar)(char *element1, char *element2)));
  630. Xextern char *        realloc _ANSI_ARGS_((char *ptr, unsigned int numBytes));
  631. Xextern double        strtod _ANSI_ARGS_((char *string, char **endPtr));
  632. Xextern long        strtol _ANSI_ARGS_((char *string, char **endPtr,
  633. X                int base));
  634. Xextern unsigned long    strtoul _ANSI_ARGS_((CONST char *string,
  635. X                char **endPtr, int base));
  636. X
  637. X#endif /* _STDLIB */
  638. END_OF_FILE
  639. if test 1915 -ne `wc -c <'tcl6.1/compat/stdlib.h'`; then
  640.     echo shar: \"'tcl6.1/compat/stdlib.h'\" unpacked with wrong size!
  641. fi
  642. # end of 'tcl6.1/compat/stdlib.h'
  643. fi
  644. if test -f 'tcl6.1/compat/string.h' -a "${1}" != "-c" ; then 
  645.   echo shar: Will not clobber existing file \"'tcl6.1/compat/string.h'\"
  646. else
  647. echo shar: Extracting \"'tcl6.1/compat/string.h'\" \(2141 characters\)
  648. sed "s/^X//" >'tcl6.1/compat/string.h' <<'END_OF_FILE'
  649. X/*
  650. X * string.h --
  651. X *
  652. X *    Declarations of ANSI C library procedures for string handling.
  653. X *
  654. X * Copyright 1991 Regents of the University of California
  655. X * Permission to use, copy, modify, and distribute this
  656. X * software and its documentation for any purpose and without
  657. X * fee is hereby granted, provided that the above copyright
  658. X * notice appears in all copies.  The University of California
  659. X * makes no representations about the suitability of this
  660. X * software for any purpose.  It is provided "as is" without
  661. X * express or implied warranty.
  662. X *
  663. X * $Header: /sprite/src/lib/tcl/compat/RCS/string.h,v 1.1 91/09/19 16:22:11 ouster Exp $ SPRITE (Berkeley)
  664. X */
  665. X
  666. X#ifndef _STRING
  667. X#define _STRING
  668. X
  669. X#include <tcl.h>
  670. X
  671. Xextern char *        memchr _ANSI_ARGS_((char *s, int c, int n));
  672. Xextern int        memcmp _ANSI_ARGS_((char *s1, char *s2, int n));
  673. Xextern char *        memcpy _ANSI_ARGS_((char *t, char *f, int n));
  674. Xextern char *        memmove _ANSI_ARGS_((char *t, char *f, int n));
  675. Xextern char *        memset _ANSI_ARGS_((char *s, int c, int n));
  676. X
  677. Xextern int        strcasecmp _ANSI_ARGS_((char *s1, char *s2));
  678. Xextern char *        strcat _ANSI_ARGS_((char *dst, char *src));
  679. Xextern char *        strchr _ANSI_ARGS_((char *string, int c));
  680. Xextern int        strcmp _ANSI_ARGS_((char *s1, char *s2));
  681. Xextern char *        strcpy _ANSI_ARGS_((char *dst, char *src));
  682. Xextern int        strcspn _ANSI_ARGS_((char *string, char *chars));
  683. Xextern char *        strdup _ANSI_ARGS_((char *string));
  684. Xextern char *        strerror _ANSI_ARGS_((int error));
  685. Xextern int        strlen _ANSI_ARGS_((char *string));
  686. Xextern int        strncasecmp _ANSI_ARGS_((char *s1, char *s2, int n));
  687. Xextern char *        strncat _ANSI_ARGS_((char *dst, char *src,
  688. X                int numChars));
  689. Xextern int        strncmp _ANSI_ARGS_((char *s1, char *s2, int nChars));
  690. Xextern char *        strncpy _ANSI_ARGS_((char *dst, char *src,
  691. X                int numChars));
  692. Xextern char *        strpbrk _ANSI_ARGS_((char *string, char *chars));
  693. Xextern char *        strrchr _ANSI_ARGS_((char *string, int c));
  694. Xextern int        strspn _ANSI_ARGS_((char *string, char *chars));
  695. Xextern char *        strstr _ANSI_ARGS_((char *string, char *substring));
  696. Xextern char *        strtok _ANSI_ARGS_((char *s, char *delim));
  697. X
  698. X#endif /* _STRING */
  699. END_OF_FILE
  700. if test 2141 -ne `wc -c <'tcl6.1/compat/string.h'`; then
  701.     echo shar: \"'tcl6.1/compat/string.h'\" unpacked with wrong size!
  702. fi
  703. # end of 'tcl6.1/compat/string.h'
  704. fi
  705. if test -f 'tcl6.1/compat/strstr.c' -a "${1}" != "-c" ; then 
  706.   echo shar: Will not clobber existing file \"'tcl6.1/compat/strstr.c'\"
  707. else
  708. echo shar: Extracting \"'tcl6.1/compat/strstr.c'\" \(1922 characters\)
  709. sed "s/^X//" >'tcl6.1/compat/strstr.c' <<'END_OF_FILE'
  710. X/* 
  711. X * strstr.c --
  712. X *
  713. X *    Source code for the "strstr" library routine.
  714. X *
  715. X * Copyright 1988-1991 Regents of the University of California
  716. X * Permission to use, copy, modify, and distribute this
  717. X * software and its documentation for any purpose and without
  718. X * fee is hereby granted, provided that the above copyright
  719. X * notice appears in all copies.  The University of California
  720. X * makes no representations about the suitability of this
  721. X * software for any purpose.  It is provided "as is" without
  722. X * express or implied warranty.
  723. X */
  724. X
  725. X#ifndef lint
  726. Xstatic char rcsid[] = "$Header: /sprite/src/lib/tcl/compat/RCS/strstr.c,v 1.1 91/09/19 16:22:12 ouster Exp $ SPRITE (Berkeley)";
  727. X#endif /* not lint */
  728. X
  729. X/*
  730. X *----------------------------------------------------------------------
  731. X *
  732. X * strstr --
  733. X *
  734. X *    Locate the first instance of a substring in a string.
  735. X *
  736. X * Results:
  737. X *    If string contains substring, the return value is the
  738. X *    location of the first matching instance of substring
  739. X *    in string.  If string doesn't contain substring, the
  740. X *    return value is 0.  Matching is done on an exact
  741. X *    character-for-character basis with no wildcards or special
  742. X *    characters.
  743. X *
  744. X * Side effects:
  745. X *    None.
  746. X *
  747. X *----------------------------------------------------------------------
  748. X */
  749. X
  750. Xchar *
  751. Xstrstr(string, substring)
  752. X    register char *string;    /* String to search. */
  753. X    char *substring;        /* Substring to try to find in string. */
  754. X{
  755. X    register char *a, *b;
  756. X
  757. X    /* First scan quickly through the two strings looking for a
  758. X     * single-character match.  When it's found, then compare the
  759. X     * rest of the substring.
  760. X     */
  761. X
  762. X    b = substring;
  763. X    if (*b == 0) {
  764. X    return string;
  765. X    }
  766. X    for ( ; *string != 0; string += 1) {
  767. X    if (*string != *b) {
  768. X        continue;
  769. X    }
  770. X    a = string;
  771. X    while (1) {
  772. X        if (*b == 0) {
  773. X        return string;
  774. X        }
  775. X        if (*a++ != *b++) {
  776. X        break;
  777. X        }
  778. X    }
  779. X    b = substring;
  780. X    }
  781. X    return (char *) 0;
  782. X}
  783. END_OF_FILE
  784. if test 1922 -ne `wc -c <'tcl6.1/compat/strstr.c'`; then
  785.     echo shar: \"'tcl6.1/compat/strstr.c'\" unpacked with wrong size!
  786. fi
  787. # end of 'tcl6.1/compat/strstr.c'
  788. fi
  789. if test -f 'tcl6.1/compat/testpid.c' -a "${1}" != "-c" ; then 
  790.   echo shar: Will not clobber existing file \"'tcl6.1/compat/testpid.c'\"
  791. else
  792. echo shar: Extracting \"'tcl6.1/compat/testpid.c'\" \(931 characters\)
  793. sed "s/^X//" >'tcl6.1/compat/testpid.c' <<'END_OF_FILE'
  794. X/* 
  795. X * testpid.c --
  796. X *
  797. X *    This file contains a simple program that will compile
  798. X *    correctly if and only if <sys/types.h> defines the
  799. X *    type pid_t and uid_t.  It is used to determine whether
  800. X *    these types are defined on a given system.
  801. X *
  802. X * Copyright 1991 Regents of the University of California
  803. X * Permission to use, copy, modify, and distribute this
  804. X * software and its documentation for any purpose and without
  805. X * fee is hereby granted, provided that this copyright
  806. X * notice appears in all copies.  The University of California
  807. X * makes no representations about the suitability of this
  808. X * software for any purpose.  It is provided "as is" without
  809. X * express or implied warranty.
  810. X */
  811. X
  812. X#ifndef lint
  813. Xstatic char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/testpid.c,v 1.1 91/11/07 10:26:53 ouster Exp $ SPRITE (Berkeley)";
  814. X#endif /* not lint */
  815. X
  816. X#include <sys/types.h>
  817. X
  818. Xpid_t pid;
  819. Xuid_t uid;
  820. X
  821. Xint main()
  822. X{
  823. X    return 0;
  824. X}
  825. END_OF_FILE
  826. if test 931 -ne `wc -c <'tcl6.1/compat/testpid.c'`; then
  827.     echo shar: \"'tcl6.1/compat/testpid.c'\" unpacked with wrong size!
  828. fi
  829. # end of 'tcl6.1/compat/testpid.c'
  830. fi
  831. if test -f 'tcl6.1/compat/testwait.c' -a "${1}" != "-c" ; then 
  832.   echo shar: Will not clobber existing file \"'tcl6.1/compat/testwait.c'\"
  833. else
  834. echo shar: Extracting \"'tcl6.1/compat/testwait.c'\" \(946 characters\)
  835. sed "s/^X//" >'tcl6.1/compat/testwait.c' <<'END_OF_FILE'
  836. X/* 
  837. X * testwait.c --
  838. X *
  839. X *    This file contains a simple program that will compile
  840. X *    correctly if and only if <sys/wait.h> defines the
  841. X *    type "union wait".  It is used during configuration
  842. X *    to determine whether or not to use this type.
  843. X *
  844. X * Copyright 1991 Regents of the University of California
  845. X * Permission to use, copy, modify, and distribute this
  846. X * software and its documentation for any purpose and without
  847. X * fee is hereby granted, provided that this copyright
  848. X * notice appears in all copies.  The University of California
  849. X * makes no representations about the suitability of this
  850. X * software for any purpose.  It is provided "as is" without
  851. X * express or implied warranty.
  852. X */
  853. X
  854. X#ifndef lint
  855. Xstatic char rcsid[] = "$Header: /user6/ouster/tcl/compat/RCS/testwait.c,v 1.1 91/11/07 10:26:56 ouster Exp $ SPRITE (Berkeley)";
  856. X#endif /* not lint */
  857. X
  858. X#include <sys/types.h>
  859. X#include <sys/wait.h>
  860. X
  861. Xunion wait x;
  862. X
  863. Xint main()
  864. X{
  865. X    return 0;
  866. X}
  867. END_OF_FILE
  868. if test 946 -ne `wc -c <'tcl6.1/compat/testwait.c'`; then
  869.     echo shar: \"'tcl6.1/compat/testwait.c'\" unpacked with wrong size!
  870. fi
  871. # end of 'tcl6.1/compat/testwait.c'
  872. fi
  873. if test ! -d 'tcl6.1/doc' ; then
  874.     echo shar: Creating directory \"'tcl6.1/doc'\"
  875.     mkdir 'tcl6.1/doc'
  876. fi
  877. if test ! -d 'tcl6.1/library' ; then
  878.     echo shar: Creating directory \"'tcl6.1/library'\"
  879.     mkdir 'tcl6.1/library'
  880. fi
  881. if test -f 'tcl6.1/library/mkindex.tcl' -a "${1}" != "-c" ; then 
  882.   echo shar: Will not clobber existing file \"'tcl6.1/library/mkindex.tcl'\"
  883. else
  884. echo shar: Extracting \"'tcl6.1/library/mkindex.tcl'\" \(1662 characters\)
  885. sed "s/^X//" >'tcl6.1/library/mkindex.tcl' <<'END_OF_FILE'
  886. X# auto_mkindex:
  887. X# Given a directory and a glob-style specification for files in that
  888. X# directory, generate a "tclIndex" file in the directory that is suitable
  889. X# for use in auto-loading.  Returns a null string.
  890. X#
  891. X# $Header: /sprite/src/lib/tcl/scripts/RCS/mkindex.tcl,v 1.1 91/09/26 09:55:03 ouster Exp $ SPRITE (Berkeley)
  892. X#
  893. X# Copyright 1991 Regents of the University of California
  894. X# Permission to use, copy, modify, and distribute this
  895. X# software and its documentation for any purpose and without
  896. X# fee is hereby granted, provided that this copyright
  897. X# notice appears in all copies.  The University of California
  898. X# makes no representations about the suitability of this
  899. X# software for any purpose.  It is provided "as is" without
  900. X# express or implied warranty.
  901. X#
  902. X
  903. Xproc auto_mkindex {dir files} {
  904. X    set oldDir [pwd]
  905. X    cd $dir
  906. X    set dir [pwd]
  907. X    append index "# Tcl autoload index file: each line identifies a Tcl\n"
  908. X    append index "# procedure and the file where that procedure is\n"
  909. X    append index "# defined.  Generated by the \"auto_mkindex\" command.\n"
  910. X    append index "\n"
  911. X    foreach file [glob $files] {
  912. X    set f ""
  913. X    set error [catch {
  914. X        set f [open $file]
  915. X        while {[gets $f line] >= 0} {
  916. X        if [regexp {^proc[     ]+([^     ]*)} $line match indices] {
  917. X            set procName [string range $line [lindex $indices 0] \
  918. X                [lindex $indices 1]]
  919. X            append index "[list $procName $file]\n"
  920. X        }
  921. X        }
  922. X        close $f
  923. X    } msg]
  924. X    if $error {
  925. X        set code $errorCode
  926. X        set info $errorInfo
  927. X        catch [close $f]
  928. X        cd $oldDir
  929. X        error $msg $info $code
  930. X    }
  931. X    }
  932. X    set f [open tclIndex w]
  933. X    puts $f $index nonewline
  934. X    close $f
  935. X    cd $oldDir
  936. X}
  937. END_OF_FILE
  938. if test 1662 -ne `wc -c <'tcl6.1/library/mkindex.tcl'`; then
  939.     echo shar: \"'tcl6.1/library/mkindex.tcl'\" unpacked with wrong size!
  940. fi
  941. # end of 'tcl6.1/library/mkindex.tcl'
  942. fi
  943. if test -f 'tcl6.1/library/parray.tcl' -a "${1}" != "-c" ; then 
  944.   echo shar: Will not clobber existing file \"'tcl6.1/library/parray.tcl'\"
  945. else
  946. echo shar: Extracting \"'tcl6.1/library/parray.tcl'\" \(1001 characters\)
  947. sed "s/^X//" >'tcl6.1/library/parray.tcl' <<'END_OF_FILE'
  948. X# parray:
  949. X# Print the contents of a global array on stdout.
  950. X#
  951. X# $Header: /sprite/src/lib/tcl/scripts/RCS/parray.tcl,v 1.1 91/09/26 09:55:03 ouster Exp $ SPRITE (Berkeley)
  952. X#
  953. X# Copyright 1991 Regents of the University of California
  954. X# Permission to use, copy, modify, and distribute this
  955. X# software and its documentation for any purpose and without
  956. X# fee is hereby granted, provided that this copyright
  957. X# notice appears in all copies.  The University of California
  958. X# makes no representations about the suitability of this
  959. X# software for any purpose.  It is provided "as is" without
  960. X# express or implied warranty.
  961. X#
  962. X
  963. Xproc parray a {
  964. X    global $a
  965. X    set maxl 0
  966. X    foreach name [lsort [array names $a]] {
  967. X    if {[string length $name] > $maxl} {
  968. X        set maxl [string length $name]
  969. X    }
  970. X    }
  971. X    set maxl [expr {$maxl + [string length $a] + 2}]
  972. X    foreach name [lsort [array names $a]] {
  973. X    set nameString [format %s(%s) $a $name]
  974. X    puts stdout [format "%-*s = %s" $maxl $nameString [set ${a}($name)]]
  975. X    }
  976. X}
  977. END_OF_FILE
  978. if test 1001 -ne `wc -c <'tcl6.1/library/parray.tcl'`; then
  979.     echo shar: \"'tcl6.1/library/parray.tcl'\" unpacked with wrong size!
  980. fi
  981. # end of 'tcl6.1/library/parray.tcl'
  982. fi
  983. if test -f 'tcl6.1/library/tclIndex' -a "${1}" != "-c" ; then 
  984.   echo shar: Will not clobber existing file \"'tcl6.1/library/tclIndex'\"
  985. else
  986. echo shar: Extracting \"'tcl6.1/library/tclIndex'\" \(277 characters\)
  987. sed "s/^X//" >'tcl6.1/library/tclIndex' <<'END_OF_FILE'
  988. X# Tcl autoload index file: each line identifies a Tcl
  989. X# procedure and the file where that procedure is
  990. X# defined.  Generated by the "auto_mkindex" command.
  991. X
  992. Xunknown init.tcl
  993. Xauto_load init.tcl
  994. Xauto_execok init.tcl
  995. Xauto_reset init.tcl
  996. Xauto_mkindex mkindex.tcl
  997. Xparray parray.tcl
  998. END_OF_FILE
  999. if test 277 -ne `wc -c <'tcl6.1/library/tclIndex'`; then
  1000.     echo shar: \"'tcl6.1/library/tclIndex'\" unpacked with wrong size!
  1001. fi
  1002. # end of 'tcl6.1/library/tclIndex'
  1003. fi
  1004. if test -f 'tcl6.1/panic.c' -a "${1}" != "-c" ; then 
  1005.   echo shar: Will not clobber existing file \"'tcl6.1/panic.c'\"
  1006. else
  1007. echo shar: Extracting \"'tcl6.1/panic.c'\" \(1603 characters\)
  1008. sed "s/^X//" >'tcl6.1/panic.c' <<'END_OF_FILE'
  1009. X/* 
  1010. X * panic.c --
  1011. X *
  1012. X *    Source code for the "panic" library procedure for Tcl;
  1013. X *    individual applications will probably override this with
  1014. X *    an application-specific panic procedure.
  1015. X *
  1016. X * Copyright 1988-1991 Regents of the University of California
  1017. X * Permission to use, copy, modify, and distribute this
  1018. X * software and its documentation for any purpose and without
  1019. X * fee is hereby granted, provided that the above copyright
  1020. X * notice appears in all copies.  The University of California
  1021. X * makes no representations about the suitability of this
  1022. X * software for any purpose.  It is provided "as is" without
  1023. X * express or implied warranty.
  1024. X */
  1025. X
  1026. X#ifndef lint
  1027. Xstatic char rcsid[] = "$Header: /user6/ouster/tcl/RCS/panic.c,v 1.3 91/10/10 11:25:51 ouster Exp $ SPRITE (Berkeley)";
  1028. X#endif
  1029. X
  1030. X#include <stdio.h>
  1031. X#include <stdlib.h>
  1032. X
  1033. X/*
  1034. X *----------------------------------------------------------------------
  1035. X *
  1036. X * panic --
  1037. X *
  1038. X *    Print an error message and kill the process.
  1039. X *
  1040. X * Results:
  1041. X *    None.
  1042. X *
  1043. X * Side effects:
  1044. X *    The process dies, entering the debugger if possible.
  1045. X *
  1046. X *----------------------------------------------------------------------
  1047. X */
  1048. X
  1049. X    /* VARARGS ARGSUSED */
  1050. Xvoid
  1051. Xpanic(format, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
  1052. X    char *format;        /* Format string, suitable for passing to
  1053. X                 * fprintf. */
  1054. X    char *arg1, *arg2, *arg3;    /* Additional arguments (variable in number)
  1055. X                 * to pass to fprintf. */
  1056. X    char *arg4, *arg5, *arg6, *arg7, *arg8;
  1057. X{
  1058. X    (void) fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5, arg6,
  1059. X        arg7, arg8);
  1060. X    (void) fflush(stderr);
  1061. X    abort();
  1062. X}
  1063. END_OF_FILE
  1064. if test 1603 -ne `wc -c <'tcl6.1/panic.c'`; then
  1065.     echo shar: \"'tcl6.1/panic.c'\" unpacked with wrong size!
  1066. fi
  1067. # end of 'tcl6.1/panic.c'
  1068. fi
  1069. if test -f 'tcl6.1/regexp.h' -a "${1}" != "-c" ; then 
  1070.   echo shar: Will not clobber existing file \"'tcl6.1/regexp.h'\"
  1071. else
  1072. echo shar: Extracting \"'tcl6.1/regexp.h'\" \(806 characters\)
  1073. sed "s/^X//" >'tcl6.1/regexp.h' <<'END_OF_FILE'
  1074. X/*
  1075. X * Definitions etc. for regexp(3) routines.
  1076. X *
  1077. X * Caveat:  this is V8 regexp(3) [actually, a reimplementation thereof],
  1078. X * not the System V one.
  1079. X */
  1080. X
  1081. X#ifndef _TCL
  1082. X#include "tcl.h"
  1083. X#endif
  1084. X#ifndef _REGEXP
  1085. X#define _REGEXP 1
  1086. X
  1087. X#define NSUBEXP  10
  1088. Xtypedef struct regexp {
  1089. X    char *startp[NSUBEXP];
  1090. X    char *endp[NSUBEXP];
  1091. X    char regstart;        /* Internal use only. */
  1092. X    char reganch;        /* Internal use only. */
  1093. X    char *regmust;        /* Internal use only. */
  1094. X    int regmlen;        /* Internal use only. */
  1095. X    char program[1];    /* Unwarranted chumminess with compiler. */
  1096. X} regexp;
  1097. X
  1098. Xextern regexp *regcomp _ANSI_ARGS_((char *exp));
  1099. Xextern int regexec _ANSI_ARGS_((regexp *prog, char *string));
  1100. Xextern void regsub _ANSI_ARGS_((regexp *prog, char *source, char *dest));
  1101. Xextern void regerror _ANSI_ARGS_((char *msg));
  1102. X
  1103. X#endif /* REGEXP */
  1104. END_OF_FILE
  1105. if test 806 -ne `wc -c <'tcl6.1/regexp.h'`; then
  1106.     echo shar: \"'tcl6.1/regexp.h'\" unpacked with wrong size!
  1107. fi
  1108. # end of 'tcl6.1/regexp.h'
  1109. fi
  1110. if test ! -d 'tcl6.1/tests' ; then
  1111.     echo shar: Creating directory \"'tcl6.1/tests'\"
  1112.     mkdir 'tcl6.1/tests'
  1113. fi
  1114. if test -f 'tcl6.1/tests/all' -a "${1}" != "-c" ; then 
  1115.   echo shar: Will not clobber existing file \"'tcl6.1/tests/all'\"
  1116. else
  1117. echo shar: Extracting \"'tcl6.1/tests/all'\" \(315 characters\)
  1118. sed "s/^X//" >'tcl6.1/tests/all' <<'END_OF_FILE'
  1119. X# This file contains a top-level script to run all of the Tcl
  1120. X# tests.  Execute it by invoking "source all" when running tclTest
  1121. X# in this directory.
  1122. X#
  1123. X# $Header: /sprite/src/lib/tcl/tests/RCS/all,v 1.4 91/09/08 13:43:07 ouster Exp $ (Berkeley)
  1124. X
  1125. Xforeach i [lsort [glob *.test]] {
  1126. X    puts stdout $i
  1127. X    source $i
  1128. X}
  1129. END_OF_FILE
  1130. if test 315 -ne `wc -c <'tcl6.1/tests/all'`; then
  1131.     echo shar: \"'tcl6.1/tests/all'\" unpacked with wrong size!
  1132. fi
  1133. # end of 'tcl6.1/tests/all'
  1134. fi
  1135. if test -f 'tcl6.1/tests/concat.test' -a "${1}" != "-c" ; then 
  1136.   echo shar: Will not clobber existing file \"'tcl6.1/tests/concat.test'\"
  1137. else
  1138. echo shar: Extracting \"'tcl6.1/tests/concat.test'\" \(1604 characters\)
  1139. sed "s/^X//" >'tcl6.1/tests/concat.test' <<'END_OF_FILE'
  1140. X# Commands covered:  concat
  1141. X#
  1142. X# This file contains a collection of tests for one or more of the Tcl
  1143. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1144. X# generates output for errors.  No output means no errors were found.
  1145. X#
  1146. X# Copyright 1991 Regents of the University of California
  1147. X# Permission to use, copy, modify, and distribute this
  1148. X# software and its documentation for any purpose and without
  1149. X# fee is hereby granted, provided that this copyright notice
  1150. X# appears in all copies.  The University of California makes no
  1151. X# representations about the suitability of this software for any
  1152. X# purpose.  It is provided "as is" without express or implied
  1153. X# warranty.
  1154. X#
  1155. X# $Header: /sprite/src/lib/tcl/tests/RCS/concat.test,v 1.4 91/07/23 21:00:59 ouster Exp $ (Berkeley)
  1156. X
  1157. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1158. X
  1159. Xtest concat-1.1 {simple concatenation} {
  1160. X    concat a b c d e f g
  1161. X} {a b c d e f g}
  1162. Xtest concat-1.2 {merging lists together} {
  1163. X    concat a {b c d} {e f g h}
  1164. X} {a b c d e f g h}
  1165. Xtest concat-1.3 {merge lists, retain sub-lists} {
  1166. X    concat a {b {c d}} {{e f}} g h
  1167. X} {a b {c d} {e f} g h}
  1168. Xtest concat-1.4 {special characters} {
  1169. X    concat a\{ {b \{c d} \{d
  1170. X} "a{ b \\{c d {d"
  1171. X
  1172. Xtest concat-2.1 {error: no arguments} {catch concat} 1
  1173. Xtest concat-2.2 {error: no arguments} {
  1174. X    catch concat msg
  1175. X    set msg
  1176. X} {wrong # args: should be "concat arg ?arg ...?"}
  1177. X
  1178. Xtest concat-3.1 {pruning off extra white space} {
  1179. X    concat {} {a b c}
  1180. X} {a b c}
  1181. Xtest concat-3.2 {pruning off extra white space} {
  1182. X    concat x y "  a b c    \n\t  " "   "  " def "
  1183. X} {x y a b c def}
  1184. END_OF_FILE
  1185. if test 1604 -ne `wc -c <'tcl6.1/tests/concat.test'`; then
  1186.     echo shar: \"'tcl6.1/tests/concat.test'\" unpacked with wrong size!
  1187. fi
  1188. # end of 'tcl6.1/tests/concat.test'
  1189. fi
  1190. if test -f 'tcl6.1/tests/defs' -a "${1}" != "-c" ; then 
  1191.   echo shar: Will not clobber existing file \"'tcl6.1/tests/defs'\"
  1192. else
  1193. echo shar: Extracting \"'tcl6.1/tests/defs'\" \(1884 characters\)
  1194. sed "s/^X//" >'tcl6.1/tests/defs' <<'END_OF_FILE'
  1195. X# This file contains support code for the Tcl test suite.  It is
  1196. X# normally sourced by the individual files in the test suite before
  1197. X# they run their tests.  This improved approach to testing was designed
  1198. X# and initially implemented by Mary Ann May-Pumphrey of Sun Microsystems.
  1199. X
  1200. Xset VERBOSE 0
  1201. Xset TESTS {}
  1202. Xset auto_noexec 1
  1203. Xset auto_noload 1
  1204. Xcatch {rename unknown ""}
  1205. X
  1206. X# If tests are being run as root, issue a warning message and set a
  1207. X# variable to prevent some tests from running at all.
  1208. X
  1209. Xset user {}
  1210. Xcatch {set user [exec whoami]}
  1211. Xif {$user == "root"} {
  1212. X    puts stdout "Warning: you're executing as root.  I'll have to"
  1213. X    puts stdout "skip some of the tests, since they'll fail as root."
  1214. X}
  1215. X
  1216. Xproc print_verbose {test_name test_description contents_of_test answer} {
  1217. X    puts stdout "\n"
  1218. X    puts stdout "==== $test_name $test_description"
  1219. X    puts stdout "==== Contents of test case:"
  1220. X    puts stdout "$contents_of_test"
  1221. X    puts stdout "==== Result was:"
  1222. X    puts stdout "$answer"
  1223. X}
  1224. X
  1225. Xproc test {test_name test_description contents_of_test passing_results} {
  1226. X    global VERBOSE
  1227. X    global TESTS
  1228. X    if {[string compare $TESTS ""] != 0} then {
  1229. X    set ok 0
  1230. X    foreach test $TESTS {
  1231. X        if [string match $test $test_name] then {
  1232. X        set ok 1
  1233. X        break
  1234. X        }
  1235. X        }
  1236. X    if !$ok then return
  1237. X    }
  1238. X    set answer [uplevel $contents_of_test]
  1239. X    if {[string compare $answer $passing_results] == 0} then { 
  1240. X    if $VERBOSE then {
  1241. X        print_verbose $test_name $test_description $contents_of_test $answer
  1242. X        puts stdout "++++ $test_name PASSED"
  1243. X    }
  1244. X    } else { 
  1245. X    print_verbose $test_name $test_description $contents_of_test $answer 
  1246. X    puts stdout "---- Result should have been:"
  1247. X    puts stdout "$passing_results"
  1248. X    puts stdout "---- $test_name FAILED" 
  1249. X    }
  1250. X}
  1251. X
  1252. Xproc dotests {file args} {
  1253. X    global TESTS
  1254. X    set savedTests $TESTS
  1255. X    set TESTS $args
  1256. X    source $file
  1257. X    set TESTS $savedTests
  1258. X}
  1259. END_OF_FILE
  1260. if test 1884 -ne `wc -c <'tcl6.1/tests/defs'`; then
  1261.     echo shar: \"'tcl6.1/tests/defs'\" unpacked with wrong size!
  1262. fi
  1263. # end of 'tcl6.1/tests/defs'
  1264. fi
  1265. if test -f 'tcl6.1/tests/eval.test' -a "${1}" != "-c" ; then 
  1266.   echo shar: Will not clobber existing file \"'tcl6.1/tests/eval.test'\"
  1267. else
  1268. echo shar: Extracting \"'tcl6.1/tests/eval.test'\" \(1765 characters\)
  1269. sed "s/^X//" >'tcl6.1/tests/eval.test' <<'END_OF_FILE'
  1270. X# Commands covered:  eval
  1271. X#
  1272. X# This file contains a collection of tests for one or more of the Tcl
  1273. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1274. X# generates output for errors.  No output means no errors were found.
  1275. X#
  1276. X# Copyright 1991 Regents of the University of California
  1277. X# Permission to use, copy, modify, and distribute this
  1278. X# software and its documentation for any purpose and without
  1279. X# fee is hereby granted, provided that this copyright notice
  1280. X# appears in all copies.  The University of California makes no
  1281. X# representations about the suitability of this software for any
  1282. X# purpose.  It is provided "as is" without express or implied
  1283. X# warranty.
  1284. X#
  1285. X# $Header: /sprite/src/lib/tcl/tests/RCS/eval.test,v 1.4 91/08/20 14:19:02 ouster Exp $ (Berkeley)
  1286. X
  1287. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1288. X
  1289. Xtest eval-1.1 {single argument} {
  1290. X    eval {format 22}
  1291. X} 22
  1292. Xtest eval-1.2 {multiple arguments} {
  1293. X    set a {$b}
  1294. X    set b xyzzy
  1295. X    eval format $a
  1296. X} xyzzy
  1297. Xtest eval-1.3 {single argument} {
  1298. X    eval concat a b c d e f g
  1299. X} {a b c d e f g}
  1300. X
  1301. Xtest eval-2.1 {error: not enough arguments} {catch eval} 1
  1302. Xtest eval-2.2 {error: not enough arguments} {
  1303. X    catch eval msg
  1304. X    set msg
  1305. X} {wrong # args: should be "eval arg ?arg ...?"}
  1306. Xtest eval-2.3 {error in eval'ed command} {
  1307. X    catch {eval {error "test error"}}
  1308. X} 1
  1309. Xtest eval-2.4 {error in eval'ed command} {
  1310. X    catch {eval {error "test error"}} msg
  1311. X    set msg
  1312. X} {test error}
  1313. Xtest eval-2.5 {error in eval'ed command: setting errorInfo} {
  1314. X    catch {eval {
  1315. X    set a 1
  1316. X    error "test error"
  1317. X    }} msg
  1318. X    set errorInfo
  1319. X} "test error
  1320. X    while executing
  1321. X\"error \"test error\"\"
  1322. X    (\"eval\" body line 3)
  1323. X    invoked from within
  1324. X\"eval {
  1325. X    set a 1
  1326. X    error \"test error\"
  1327. X    }\""
  1328. END_OF_FILE
  1329. if test 1765 -ne `wc -c <'tcl6.1/tests/eval.test'`; then
  1330.     echo shar: \"'tcl6.1/tests/eval.test'\" unpacked with wrong size!
  1331. fi
  1332. # end of 'tcl6.1/tests/eval.test'
  1333. fi
  1334. if test -f 'tcl6.1/tests/join.test' -a "${1}" != "-c" ; then 
  1335.   echo shar: Will not clobber existing file \"'tcl6.1/tests/join.test'\"
  1336. else
  1337. echo shar: Extracting \"'tcl6.1/tests/join.test'\" \(1519 characters\)
  1338. sed "s/^X//" >'tcl6.1/tests/join.test' <<'END_OF_FILE'
  1339. X# Commands covered:  join
  1340. X#
  1341. X# This file contains a collection of tests for one or more of the Tcl
  1342. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1343. X# generates output for errors.  No output means no errors were found.
  1344. X#
  1345. X# Copyright 1991 Regents of the University of California
  1346. X# Permission to use, copy, modify, and distribute this
  1347. X# software and its documentation for any purpose and without
  1348. X# fee is hereby granted, provided that this copyright notice
  1349. X# appears in all copies.  The University of California makes no
  1350. X# representations about the suitability of this software for any
  1351. X# purpose.  It is provided "as is" without express or implied
  1352. X# warranty.
  1353. X#
  1354. X# $Header: /sprite/src/lib/tcl/tests/RCS/join.test,v 1.3 91/08/01 17:19:57 ouster Exp $ (Berkeley)
  1355. X
  1356. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1357. X
  1358. Xtest join-1.1 {basic join commands} {
  1359. X    join {a b c} xyz
  1360. X} axyzbxyzc
  1361. Xtest join-1.2 {basic join commands} {
  1362. X    join {a b c} {}
  1363. X} abc
  1364. Xtest join-1.3 {basic join commands} {
  1365. X    join {} xyz
  1366. X} {}
  1367. Xtest join-1.4 {basic join commands} {
  1368. X    join {12 34 56}
  1369. X} {12 34 56}
  1370. X
  1371. Xtest join-2.1 {join errors} {
  1372. X    list [catch join msg] $msg $errorCode
  1373. X} {1 {wrong # args: should be "join list ?joinString?"} NONE}
  1374. Xtest join-2.2 {join errors} {
  1375. X    list [catch {join a b c} msg] $msg $errorCode
  1376. X} {1 {wrong # args: should be "join list ?joinString?"} NONE}
  1377. Xtest join-2.3 {join errors} {
  1378. X    list [catch {join "a \{ c" 111} msg] $msg $errorCode
  1379. X} {1 {unmatched open brace in list} NONE}
  1380. END_OF_FILE
  1381. if test 1519 -ne `wc -c <'tcl6.1/tests/join.test'`; then
  1382.     echo shar: \"'tcl6.1/tests/join.test'\" unpacked with wrong size!
  1383. fi
  1384. # end of 'tcl6.1/tests/join.test'
  1385. fi
  1386. if test -f 'tcl6.1/tests/llength.test' -a "${1}" != "-c" ; then 
  1387.   echo shar: Will not clobber existing file \"'tcl6.1/tests/llength.test'\"
  1388. else
  1389. echo shar: Extracting \"'tcl6.1/tests/llength.test'\" \(1416 characters\)
  1390. sed "s/^X//" >'tcl6.1/tests/llength.test' <<'END_OF_FILE'
  1391. X# Commands covered:  llength
  1392. X#
  1393. X# This file contains a collection of tests for one or more of the Tcl
  1394. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1395. X# generates output for errors.  No output means no errors were found.
  1396. X#
  1397. X# Copyright 1991 Regents of the University of California
  1398. X# Permission to use, copy, modify, and distribute this
  1399. X# software and its documentation for any purpose and without
  1400. X# fee is hereby granted, provided that this copyright notice
  1401. X# appears in all copies.  The University of California makes no
  1402. X# representations about the suitability of this software for any
  1403. X# purpose.  It is provided "as is" without express or implied
  1404. X# warranty.
  1405. X#
  1406. X# $Header: /sprite/src/lib/tcl/tests/RCS/llength.test,v 1.1 91/09/06 14:48:03 ouster Exp $ (Berkeley)
  1407. X
  1408. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1409. X
  1410. Xtest llength-1.1 {length of list} {
  1411. X    llength {a b c d}
  1412. X} 4
  1413. Xtest llength-1.2 {length of list} {
  1414. X    llength {a b c {a b {c d}} d}
  1415. X} 5
  1416. Xtest llength-1.3 {length of list} {
  1417. X    llength {}
  1418. X} 0
  1419. X
  1420. Xtest llength-2.1 {error conditions} {
  1421. X    list [catch {llength} msg] $msg
  1422. X} {1 {wrong # args: should be "llength list"}}
  1423. Xtest llength-2.2 {error conditions} {
  1424. X    list [catch {llength 123 2} msg] $msg
  1425. X} {1 {wrong # args: should be "llength list"}}
  1426. Xtest llength-2.3 {error conditions} {
  1427. X    list [catch {llength "a b c \{"} msg] $msg
  1428. X} {1 {unmatched open brace in list}}
  1429. END_OF_FILE
  1430. if test 1416 -ne `wc -c <'tcl6.1/tests/llength.test'`; then
  1431.     echo shar: \"'tcl6.1/tests/llength.test'\" unpacked with wrong size!
  1432. fi
  1433. # end of 'tcl6.1/tests/llength.test'
  1434. fi
  1435. if test -f 'tcl6.1/tests/lsearch.test' -a "${1}" != "-c" ; then 
  1436.   echo shar: Will not clobber existing file \"'tcl6.1/tests/lsearch.test'\"
  1437. else
  1438. echo shar: Extracting \"'tcl6.1/tests/lsearch.test'\" \(1630 characters\)
  1439. sed "s/^X//" >'tcl6.1/tests/lsearch.test' <<'END_OF_FILE'
  1440. X# Commands covered:  lsearch
  1441. X#
  1442. X# This file contains a collection of tests for one or more of the Tcl
  1443. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1444. X# generates output for errors.  No output means no errors were found.
  1445. X#
  1446. X# Copyright 1991 Regents of the University of California
  1447. X# Permission to use, copy, modify, and distribute this
  1448. X# software and its documentation for any purpose and without
  1449. X# fee is hereby granted, provided that this copyright notice
  1450. X# appears in all copies.  The University of California makes no
  1451. X# representations about the suitability of this software for any
  1452. X# purpose.  It is provided "as is" without express or implied
  1453. X# warranty.
  1454. X#
  1455. X# $Header: /sprite/src/lib/tcl/tests/RCS/lsearch.test,v 1.1 91/08/21 13:37:25 ouster Exp $ (Berkeley)
  1456. X
  1457. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1458. X
  1459. Xset x {abcd bbcd 123 234 345}
  1460. Xtest lsearch-1.1 {lsearch command} {
  1461. X    lsearch $x 123
  1462. X} 2
  1463. Xtest lsearch-1.2 {lsearch command} {
  1464. X    lsearch $x 3456
  1465. X} -1
  1466. Xtest lsearch-1.3 {lsearch command} {
  1467. X    lsearch $x *5
  1468. X} 4
  1469. Xtest lsearch-1.4 {lsearch command} {
  1470. X    lsearch $x *bc*
  1471. X} 0
  1472. X
  1473. Xtest lsearch-2.1 {lsearch errors} {
  1474. X    list [catch lsearch msg] $msg
  1475. X} {1 {wrong # args: should be "lsearch list pattern"}}
  1476. Xtest lsearch-2.2 {lsearch errors} {
  1477. X    list [catch {lsearch a} msg] $msg
  1478. X} {1 {wrong # args: should be "lsearch list pattern"}}
  1479. Xtest lsearch-2.3 {lsearch errors} {
  1480. X    list [catch {lsearch a b c} msg] $msg
  1481. X} {1 {wrong # args: should be "lsearch list pattern"}}
  1482. Xtest lsearch-2.4 {lsearch errors} {
  1483. X    list [catch {lsearch "\{" b} msg] $msg
  1484. X} {1 {unmatched open brace in list}}
  1485. END_OF_FILE
  1486. if test 1630 -ne `wc -c <'tcl6.1/tests/lsearch.test'`; then
  1487.     echo shar: \"'tcl6.1/tests/lsearch.test'\" unpacked with wrong size!
  1488. fi
  1489. # end of 'tcl6.1/tests/lsearch.test'
  1490. fi
  1491. if test -f 'tcl6.1/tests/lsort.test' -a "${1}" != "-c" ; then 
  1492.   echo shar: Will not clobber existing file \"'tcl6.1/tests/lsort.test'\"
  1493. else
  1494. echo shar: Extracting \"'tcl6.1/tests/lsort.test'\" \(1505 characters\)
  1495. sed "s/^X//" >'tcl6.1/tests/lsort.test' <<'END_OF_FILE'
  1496. X# Commands covered:  lsort
  1497. X#
  1498. X# This file contains a collection of tests for one or more of the Tcl
  1499. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1500. X# generates output for errors.  No output means no errors were found.
  1501. X#
  1502. X# Copyright 1991 Regents of the University of California
  1503. X# Permission to use, copy, modify, and distribute this
  1504. X# software and its documentation for any purpose and without
  1505. X# fee is hereby granted, provided that this copyright notice
  1506. X# appears in all copies.  The University of California makes no
  1507. X# representations about the suitability of this software for any
  1508. X# purpose.  It is provided "as is" without express or implied
  1509. X# warranty.
  1510. X#
  1511. X# $Header: /sprite/src/lib/tcl/tests/RCS/lsort.test,v 1.1 91/08/21 13:37:25 ouster Exp $ (Berkeley)
  1512. X
  1513. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1514. X
  1515. Xtest lsort-1.1 {lsort command} {
  1516. X    lsort {abdeq ab 1 ac a}
  1517. X} {1 a ab abdeq ac}
  1518. Xtest lsort-1.2 {lsort command} {
  1519. X    lsort {{one long element}}
  1520. X} {{one long element}}
  1521. Xtest lsort-1.3 {lsort command} {
  1522. X    lsort {}
  1523. X} {}
  1524. Xtest lsort-1.4 {lsort with characters needing backslashes} {
  1525. X    lsort {$ \\ [] \{}
  1526. X} {{$} {[]} \\ \{}
  1527. X
  1528. Xtest lsort-2.1 {lsort errors} {
  1529. X    list [catch lsort msg] $msg
  1530. X} {1 {wrong # args: should be "lsort list"}}
  1531. Xtest lsort-2.2 {lsort errors} {
  1532. X    list [catch {lsort a b} msg] $msg
  1533. X} {1 {wrong # args: should be "lsort list"}}
  1534. Xtest lsort-2.3 {lsort errors} {
  1535. X    list [catch {lsort "\{"} msg] $msg
  1536. X} {1 {unmatched open brace in list}}
  1537. END_OF_FILE
  1538. if test 1505 -ne `wc -c <'tcl6.1/tests/lsort.test'`; then
  1539.     echo shar: \"'tcl6.1/tests/lsort.test'\" unpacked with wrong size!
  1540. fi
  1541. # end of 'tcl6.1/tests/lsort.test'
  1542. fi
  1543. if test -f 'tcl6.1/tests/split.test' -a "${1}" != "-c" ; then 
  1544.   echo shar: Will not clobber existing file \"'tcl6.1/tests/split.test'\"
  1545. else
  1546. echo shar: Extracting \"'tcl6.1/tests/split.test'\" \(1701 characters\)
  1547. sed "s/^X//" >'tcl6.1/tests/split.test' <<'END_OF_FILE'
  1548. X# Commands covered:  split
  1549. X#
  1550. X# This file contains a collection of tests for one or more of the Tcl
  1551. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1552. X# generates output for errors.  No output means no errors were found.
  1553. X#
  1554. X# Copyright 1991 Regents of the University of California
  1555. X# Permission to use, copy, modify, and distribute this
  1556. X# software and its documentation for any purpose and without
  1557. X# fee is hereby granted, provided that this copyright notice
  1558. X# appears in all copies.  The University of California makes no
  1559. X# representations about the suitability of this software for any
  1560. X# purpose.  It is provided "as is" without express or implied
  1561. X# warranty.
  1562. X#
  1563. X# $Header: /sprite/src/lib/tcl/tests/RCS/split.test,v 1.2 91/08/11 17:08:26 ouster Exp $ (Berkeley)
  1564. X
  1565. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1566. X
  1567. Xtest split-1.1 {basic split commands} {
  1568. X    split "a\n b\t\r c\n "
  1569. X} {a {} b {} {} c {} {}}
  1570. Xtest split-1.2 {basic split commands} {
  1571. X    split "word 1xyzword 2zword 3" xyz
  1572. X} {{word 1} {} {} {word 2} {word 3}}
  1573. Xtest split-1.3 {basic split commands} {
  1574. X    split "12345" {}
  1575. X} {1 2 3 4 5}
  1576. Xtest split-1.4 {basic split commands} {
  1577. X    split "a\}b\[c\{\]\$"
  1578. X} "a}b\\\[c{\\\]\\\$"
  1579. Xtest split-1.5 {basic split commands} {
  1580. X    split {} {}
  1581. X} {}
  1582. Xtest split-1.6 {basic split commands} {
  1583. X    split {}
  1584. X} {}
  1585. Xtest split-1.7 {basic split commands} {
  1586. X    split {   }
  1587. X} {{} {} {} {}}
  1588. X
  1589. Xtest split-2.1 {split errors} {
  1590. X    list [catch split msg] $msg $errorCode
  1591. X} {1 {wrong # args: should be "split string ?splitChars?"} NONE}
  1592. Xtest split-2.2 {split errors} {
  1593. X    list [catch {split a b c} msg] $msg $errorCode
  1594. X} {1 {wrong # args: should be "split string ?splitChars?"} NONE}
  1595. END_OF_FILE
  1596. if test 1701 -ne `wc -c <'tcl6.1/tests/split.test'`; then
  1597.     echo shar: \"'tcl6.1/tests/split.test'\" unpacked with wrong size!
  1598. fi
  1599. # end of 'tcl6.1/tests/split.test'
  1600. fi
  1601. if test -f 'tcl6.1/tests/unknown.test' -a "${1}" != "-c" ; then 
  1602.   echo shar: Will not clobber existing file \"'tcl6.1/tests/unknown.test'\"
  1603. else
  1604. echo shar: Extracting \"'tcl6.1/tests/unknown.test'\" \(1948 characters\)
  1605. sed "s/^X//" >'tcl6.1/tests/unknown.test' <<'END_OF_FILE'
  1606. X# Commands covered:  unknown
  1607. X#
  1608. X# This file contains a collection of tests for one or more of the Tcl
  1609. X# built-in commands.  Sourcing this file into Tcl runs the tests and
  1610. X# generates output for errors.  No output means no errors were found.
  1611. X#
  1612. X# Copyright 1991 Regents of the University of California
  1613. X# Permission to use, copy, modify, and distribute this
  1614. X# software and its documentation for any purpose and without
  1615. X# fee is hereby granted, provided that this copyright notice
  1616. X# appears in all copies.  The University of California makes no
  1617. X# representations about the suitability of this software for any
  1618. X# purpose.  It is provided "as is" without express or implied
  1619. X# warranty.
  1620. X#
  1621. X# $Header: /sprite/src/lib/tcl/tests/RCS/unknown.test,v 1.3 91/08/21 13:53:23 ouster Exp $ (Berkeley)
  1622. X
  1623. Xif {[string compare test [info procs test]] == 1} then {source defs}
  1624. X
  1625. Xcatch {rename unknown {}}
  1626. X
  1627. Xtest unknown-1.1 {non-existent "unknown" command} {
  1628. X    list [catch {_non-existent_ foo bar} msg] $msg
  1629. X} {1 {invalid command name: "_non-existent_"}}
  1630. X
  1631. Xproc unknown {args} {
  1632. X    global x
  1633. X    set x $args
  1634. X}
  1635. X
  1636. Xtest unknown-2.1 {calling "unknown" command} {
  1637. X    foobar x y z
  1638. X    set x
  1639. X} {foobar x y z}
  1640. Xtest unknown-2.2 {calling "unknown" command with lots of args} {
  1641. X    foobar 1 2 3 4 5 6 7
  1642. X    set x
  1643. X} {foobar 1 2 3 4 5 6 7}
  1644. Xtest unknown-2.3 {calling "unknown" command with lots of args} {
  1645. X    foobar 1 2 3 4 5 6 7 8
  1646. X    set x
  1647. X} {foobar 1 2 3 4 5 6 7 8}
  1648. Xtest unknown-2.4 {calling "unknown" command with lots of args} {
  1649. X    foobar 1 2 3 4 5 6 7 8 9
  1650. X    set x
  1651. X} {foobar 1 2 3 4 5 6 7 8 9}
  1652. X
  1653. Xtest unknown-3.1 {argument quoting in calls to "unkown"} {
  1654. X    foobar \{ \} a\{b \; "\\" \$a a\[b \]
  1655. X    set x
  1656. X} "foobar \\{ \} a\{b {;} \\\\ {\$a} {a\[b} \\]"
  1657. X
  1658. Xproc unknown args {
  1659. X    error "unknown failed"
  1660. X}
  1661. X
  1662. Xtest unknown-4.1 {errors in "unknown" procedure} {
  1663. X    list [catch {non-existent a b} msg] $msg $errorCode
  1664. X} {1 {unknown failed} NONE}
  1665. X
  1666. Xcatch {rename unknown {}}
  1667. Xreturn {}
  1668. END_OF_FILE
  1669. if test 1948 -ne `wc -c <'tcl6.1/tests/unknown.test'`; then
  1670.     echo shar: \"'tcl6.1/tests/unknown.test'\" unpacked with wrong size!
  1671. fi
  1672. # end of 'tcl6.1/tests/unknown.test'
  1673. fi
  1674. echo shar: End of archive 1 \(of 33\).
  1675. cp /dev/null ark1isdone
  1676. MISSING=""
  1677. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1678.     if test ! -f ark${I}isdone ; then
  1679.     MISSING="${MISSING} ${I}"
  1680.     fi
  1681. done
  1682. if test "${MISSING}" = "" ; then
  1683.     echo You have unpacked all 33 archives.
  1684.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1685. else
  1686.     echo You still need to unpack the following archives:
  1687.     echo "        " ${MISSING}
  1688. fi
  1689. ##  End of shell archive.
  1690. exit 0
  1691.  
  1692. exit 0 # Just in case...
  1693. -- 
  1694. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1695. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1696. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1697. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1698.